/*
 * RegistroAbstracto.cpp
 *
 */
#include "RegistroAbstracto.h"
#include "RegistroDatosConteo.h"
#include "RegistroInternoConteo.h"


RegistroAbstracto::RegistroAbstracto(){
	this->_id = "";
	this->_serializador.reset();
}


RegistroAbstracto::~RegistroAbstracto(){
	this->_id = "";
	this->_serializador.reset();
}


void RegistroAbstracto::setId(std::string id){
	this->_id = id;
}


std::string RegistroAbstracto::getId(){
	return this->_id;
}


// Es un constructor virtual
RegistroAbstracto* RegistroAbstracto::unPack(char* dataBuffer, datosArchivados tipo, bool esHoja){
	// Como no puedo guarda un flag que me indique que tipo de registro hay que
	// crear dependo de la funcion llamante para que lo indique
	switch (tipo){
		// La estructura de conteo
		case CONTEO:
			// Depende si es hoja o no cambia el registro
			if (esHoja)
				return new RegistroDatosConteo(dataBuffer);
			else
				return new RegistroInternoConteo(dataBuffer);
			break;

		case NONE:
		default: break;
	}

	// El tipo señalado no existe
	return NULL;
}


